package com.ck.common.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author ck
 * @date 2023/11/28 14:53
 */

/**
 * 限流注解(适用单机)
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestLimiter {

    /**
     * 资源的key,唯一
     * 作用: 不同的接口，不同的流量控制
     * @return
     */
    String key() default "";

    /**
     * 最大容量
     * @return
     */
    double permitsPerSecond() default 5;

    /**
     * 获取令牌等待超时时间 默认500
     * @return
     */
    long timeout() default 500;

    /**
     * 超时时间单位 默认毫秒
     * @return
     */
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    /**
     * 无法获取令牌返回提示信息
     * @return
     */
    String msg() default "服务器繁忙，请稍后再试!";
}
